package com.sprouting.ops.model;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sprouting.ops.annotations.invoke.CheckIsNullOrEmpty;
import com.sprouting.ops.annotations.invoke.CheckLength;
import com.sprouting.ops.annotations.invoke.CheckNotNull;
import com.sprouting.ops.interfaces.AddGroup;
import com.sprouting.ops.interfaces.UpdGroup;
import lombok.Data;

import javax.validation.constraints.NotNull;

/**
 * 工具;(OpsTool)(OPS_TOOL) 表实体类
 *
 * @author ：lx（长沙麓谷）
 * @date 创建时间：2025-07-22 14:33:37
 */
@Data
@TableName("ops_tool")
public class OpsTool extends BaseModel {

    /**
     * 主键
     */
    @CheckNotNull(message = "非法ID", groups = UpdGroup.class)
    @CheckIsNullOrEmpty(message = "无效ID", groups = AddGroup.class)
    @TableId
    private String id;
    /**
     * 图标
     * @see DromaraFileStorage#getId()
     */
    private String ico;
    /**
     * 工具名称
     */
    @CheckLength(min = 1, max = 255, message = "工具名称超过长度限制")
    @CheckNotNull(message = "请输入工具名称")
    private String name;
    /**
     * 工具类型,项目管理、代码管理
     * @see com.sprouting.ops.interfaces.ConstantBase.ToolType
     */
    @NotNull(message = "请选择工具类型")
    private Integer type;
    /**
     * 官网链接
     */
    @CheckLength(max = 500, message = "官网链接超过长度限制")
    private String officialWebUrl;
    /**
     * 简介
     */
    @CheckLength(max = 1000, message = "简介超过长度限制")
    private String briefIntroduction;
    /**
     * 安装方式
     */
    private String installDoc;
    /**
     * 维护人
     */
    @CheckLength(max = 255, message = "维护人超过长度限制")
    private String directorName;
    /**
     * 备注
     */
    private String description;
}
